home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / hardware / keyboardhack / newkbdhack
Text File  |  1995-03-09  |  18KB  |  363 lines

  1.     All right. I've noticed a number of people asking about putting
  2. an external keyboard on their 1200's. Unfortunately, the only replies
  3. they got said it couldn't be done, or that it would be very difficult. Neither
  4. of these is true. Electronically, the keyboard interface is pretty much the 
  5. same as it always has been. The only real obstacles are physical; Thus I 
  6. decided to make an attempt, and recently managed to pull it off. What follows 
  7. is an account of what I did along with a few suggestions. Be sure to read it
  8. through all the way before breaking out the tools...
  9.  
  10.     It's been working well so far (I'm typing this on my good old A1000 
  11. keyboard hooked up to my 1200 right now.) The result is that I can have 
  12. both an internal and external keyboard hooked up simultaneously without 
  13. interference. In fact, they complement one another. You can actually press 
  14. shift on one keyboard and 's' on the other and get a capital 'S'! Those old 
  15. 6570 keyboard controllers are quite robust, seemingly in contrast to the on
  16. board one in the 1200. 
  17.  
  18.     Needless to say, doing this modification required some very delicate
  19. work. The internal keyboard micro has to be physically taken off-line
  20. in order to connect an external keyboard or keyboards. This isn't like the
  21. 500 where all you had to do to hook up an external was to patch into
  22. the KCLK and KDAT lines, tap +5 and Ground from somewhere and you
  23. were done. The 6570's took care of all the handshaking automatically.
  24. Unfortunately, the 1200's keyboard micro doesn't work that way. Hooking 
  25. up another keyboard in parallel with it's clock + data lines just hangs both
  26. of them. (My guess is that the output isn't open-collector like it
  27. is on the externals, (there's no reason for it to be) so when you have
  28. an external hooked up, the internal can't drive its 0's low enough.)
  29. Anyway, I just decided to do away with the internal controller altogether.
  30.  
  31.     Um...let me just say this... I'm not really writing this post in the
  32. form of a full blown hardware hack. This is more of a "Here's what I did.
  33. If you'd like to give it a shot, here's what you need to know." sort
  34. of thing. I'm not going to go into disassembly instructions or anything 
  35. like that. I will make the standard disclaimer, though: If you try this and
  36. you blow up your machine, don't come crying to me. There are some quite
  37. tiny spots that have to be soldered and/or desoldered, so patience, a 
  38. steady hand, and a reasonably sharp soldering iron are a definite
  39. necessity. If there's enough support for turning this into a full article
  40. I'll throw something together. (My brother suggested submitting it to 
  41. AC, but it may be a bit hardcore for them. Schematically, it's quite
  42. simple, but the tiny joints do make it a little more difficult. Maybe 
  43. Aminet...
  44.  
  45.     Okay, with that out of the way here are the gooey details. The two
  46. chips we'll be dealing with are U13 (The keyboard micro) and U7 (The
  47. keyboard/parallel 8520). Try to keep your soldering iron and any other
  48. potentially destructive tools away from the other chips. ;^) The KBClk and 
  49. KBDat pins on the keyboard micro need to be heated and bent up away 
  50. from the motherboard. I touched the top of the pin with the iron, let it heat 
  51. for a second and then, with a razor-knife wedged behind the pin, twisted, 
  52. lifting the pin away from the board. There's not much solder holding these 
  53. down, so it shouldn't take too much force. Once the pin was free, I straight
  54. ened it up with a pair of needle-nose pliers and went on to the next one. 
  55. Fortunately, both pins are right next to each other and the keyboard micro 
  56. (and the 8520) are surface-mounted PLCC's and not true SMD's. These 
  57. are the only two pins that need to be desoldered. The rest of this hack just 
  58. involves soldering wires in. 
  59. ***NOTE: I've heard from at least two people that their internal micros did not
  60. need to be taken offline for the external to work. All I know is that on mine 
  61. it had to be disconnected. Your Mileage May Vary, however, so you may 
  62. want to try skipping this step, do the rest, and see if it works.***
  63.  
  64.     Get your hands on the smallest insulated wire you can find (>24 awg),
  65. and solder wires to the KBClk, KBDat and _KBReset lines as shown in the diagram
  66. below. The number of pins on the chips should be accurate. they are 44 pin 
  67. PLCC's, with 11 pins on each side. The ^ denotes the pin 1 dot on the chips.
  68.  
  69. ----------------------------------------------------------------------------
  70.  
  71.                 |||||||||||
  72.                   -+-----------+-
  73.                   -|           |-
  74.                   -|           |-
  75.                   -|   8520PL  |-
  76.                   -|           |-
  77.                   -|     U7    |-
  78.                   -|           |-
  79.                   -|           |-
  80.                   -|           |-
  81.                   -|     ^     |-
  82.                   -+-----------+-
  83.                     |||||||||||
  84.                    ||
  85.                    | \KBDat (Solder wire here)
  86.     |||||||||||                |
  87.       -+-----------+-               \KBClk (Solder wire here)
  88.       -|           |-
  89.       -|           |-
  90.       -| Keyboard  |---KBClk (Desolder + bend up)              Floppy
  91.       -|  Micro.   |---KBDat (Desolder + bend up)              Power
  92.       -|           |-                
  93.       -|    U13    |-                            ....
  94.       -|           |-            To                    ||
  95.       -|           |-           Front                ||
  96.    /---|     ^     |-            of                     +5v/|
  97.    |  -+-----------+-          Machine                /     |
  98.    |    |||||||||||            ||           (Tap +5 and Gnd. from     |
  99.    |                    ||         these wires.)-------Gnd /
  100.    \_KBReset (Solder wire here)     ||
  101.                        ||
  102.                     \/
  103.  
  104. ----------------------------------------------------------------------------
  105.  
  106.     As you can see, power is easily tapped from the floppy cable. You 
  107. should use somewhat larger wires for this. Thus, when you're done you 
  108. should have five wires coming out of your machine: KBClk, KBDat, 
  109. _KBReset, +5, and Gnd. You will also have a non-functional internal key
  110. board. If you want, however, you can take these wires (except _KBReset) 
  111. and hook them up to a 5 pin DIN and attach a 2000/3000 keyboard, or a 
  112. phone plug and connect a 1000 keyboard. There is a catch, however. You 
  113. will not be able to reset from the external keyboard. 1000s, 2000s, 3000s, 
  114. and 4000s have internal circuitry which interprets 500 milliseconds of 
  115. KBClk low as a "reset" pulse, and pulls the _KBReset line internally (This is 
  116. according to the Hardware Manual). So unless you fabricate a circuit that 
  117. does this (see below), you'll need to reset from the native keyboard. (This 
  118. function should still work. Actually, If you're going to do it this way, 
  119. there's no need to solder the extra wire for _KBReset.) 
  120.  
  121.     Now, the A500 keyboard is slightly different. It has no case but it
  122. will generate a _KBReset signal. Remember how I said you could have two
  123. kbd's simultaneously? Well, all you have to do is hook up your external as
  124. described above, and string your wires along (Including _KBReset) to the 
  125. 500 keyboard. What's more, the 500 keyboard is a near-exact fit replace
  126. ment for the 1200 one (and with full sized Left-Shift and Return keys!). In 
  127. order to do this I had to desolder the LEDs on the 500 kbd altogether and 
  128. then remove the ones from the 1200's "LED board", hot glue them individually
  129. to their positions, bend the leads down flat, and wire them up again. Also, 
  130. the support on the top part of the wedge-shaped floppy bracket has to be sawed
  131. off to make room for the encoder board. It works, though, and theoretically I
  132. should even be able to fit the RF shield back on.
  133.  
  134.     Okay, so you may not like the beige-colored keys of the 500 keyboard
  135. sticking out of your shiny white 1200 case. The simple solution is to swap 
  136. the 500 keyboard's beige keycaps for your defunct 1200 keyboard's white ones.
  137. They should be the same in every respect except color. There is, however,
  138. another alternative. Your original 1200 keyboard may be compatible with the 500 
  139. keyboard's encoder board. Encoder boards that are compatible have a
  140. slot for one large ribbon cable to fit in.  Incompatible encoder boards have 
  141. slots for two small ribbon cables. If compatible, all you have to do is unplug 
  142. the ribbon from the 500 keyboard itself, unscrew the little circuit board in 
  143. the upper-right corner (the encoder board) and remove it along with its 
  144. plastic bottom-shield. You can then plug the ribbon from your 1200 kbd into 
  145. the socket, and wire the encoder board up as you would with the
  146. true 500 keyboard. This is the setup I had originally. Now, since the ribbon 
  147. comes out of the middle-back of the 1200 keyboard, you have to put the 
  148. controller board in that same vicinity. It's up to you how to mount it, but 
  149. what I did was to first off trash the RF shield. (REAL hackers don' need no 
  150. steenkin' RF shield 8^) ) Then I hot-glued the plastic shield to the bottom of 
  151. the encoder board, and hot-glued this by the lower left corner to the top of 
  152. the hard drive. The other end rests on the floppy cable, and tension from 
  153. the keyboard ribbon folded under the keyboard keeps the whole thing 
  154. steady.
  155.  
  156. Here's a quick recap:
  157.  
  158.        -Desolder the clock and data pins coming from the onboard A1200 
  159.     keyboard microcontroller. (This is probably the hardest part of this
  160.     whole thing.)
  161.  
  162.        -Solder the KBClk, KBDat, _KBReset, +5, and Gnd. lines to the 
  163.     locations described in the diagram. (A magnifier lamp is useful for 
  164.     this.)
  165.  
  166.        -Hook the KBDat, KBClk, +5, and Gnd. lines up to some sort of 
  167.     external keyboard connector, and use the dead internal to reset, OR
  168.  
  169.     Hook the KBDat, KBClk, +5, and Gnd. lines up to some sort of 
  170.     external keyboard connector and run the wires along to their 
  171.     corresponding locations on a 500 keyboard INCLUDING _KBReset, OR
  172.  
  173.     Hook the KBDat, KBClk, +5, and Gnd. lines up to some sort of 
  174.     external keyboard connector and run the wires along to their 
  175.     corresponding locations on a 500 keyboard's encoder board INCLUDING 
  176.     _KBReset and then plug your 1200 keyboard's ribbon cable into the
  177.     encoder board.
  178.  
  179.        -Seal up, fasten down, make sure there are no solder bridges, shorts,
  180.     etc.
  181.  
  182.        -Power up and enjoy!
  183.  
  184. ---------------------------------------------------------------------------
  185. Below are the pinouts for various types of Amiga keyboards.
  186.  
  187. A500:                Ribbon out (usually rainbow)
  188.                     Black=1...Purple=8
  189.                     ||||||||
  190.             +---------------------------------------+
  191.             |     Pin 1->........<-Pin 8        |
  192.             |        |||| |             XX<--Shield Gnd.
  193.             | A500          |||| \Gnd        |
  194.             | Keyboard    |||\+5v           [===]<--Power LED
  195.             | Encoder    ||\_KBReset        |
  196.             |        |\KBClk           [===]<--Drive LED
  197.             | +-----------+    \KBDat            |
  198.     Ribbon Socket---->|...........|                |
  199.             +---------------------------------------+
  200.                |||||||||||
  201.                ||||||||||| <---To A500 or A1200 Keyboard.
  202.  
  203. A1000: (Connector on back of keyboard itself)
  204.  
  205.     (Female)        +------+
  206.                 | |||| |    1=Gnd
  207.                 | 1234 |    2=KBClk
  208.                 |      |    3=KBDat
  209.                 +-+  +-+    4=+5v
  210.                   +  +
  211.                    ++
  212.  
  213. A2000/3000: (This is from the Hardware book. Not firsthand information.)
  214.  
  215.     (Female)          -v-
  216.                  /   \
  217.                 |3   1|        1=KBClk
  218.                 | 5 4 |        2=KBDat
  219.                 |  2  |        3=NC
  220.                  \___/        4=Gnd.
  221.                         5=+5v
  222. ---------------------------------------------------------------------------
  223.  
  224. That's pretty much it. As I said, this isn't a full tutorial, so I'm
  225. leaving the mechanical considerations up to the reader.
  226. If you have any other suggestions for improvement let me know, or feel
  227. free to add them in yourself. Start a credits list if you so desire.
  228.  
  229. Some final thoughts:
  230.  
  231.     -I wouldn't worry too much about power supply overloading. I've
  232.      got 2 floppys, 2 keyboards, a hard drive, a DataFlyer SCSI+ 
  233.      SCSI controller, and a MicroBotics 50Mhz 1230XA with '881 and 8
  234.      megs and my stock supply hasn't complained yet.
  235.  
  236.     -You could also use a DPDT switch to switch between internal and
  237.      external keyboards. One side goes to KBClk and KBDat on the internal
  238.      micro, the other side goes to the same lines from the external, and
  239.      the middle goes to the pins on the 8520. The keyboards should be
  240.      able to deal with being switched in or out in midstream.
  241.      (I have not actually tried this one, but don't see why it wouldn't
  242.      work, as it's effectively the same thing as unplugging one keyboard
  243.      and plugging in another one.) The Hardware Manual says the keyboards
  244.      were designed to handle hot connects/disconnects.
  245.  
  246.     -No, IBM keyboards are electrically totally different. You would
  247.      need a microprocessor driven interface to make the translation.
  248.      There is a (fairly involved) hack on Aminet in /hard/hack to do this.
  249.  
  250.     -If you hook everything up and get a pulsing stream of '''s, you've
  251.      got the clock and data lines backwards. Switch them around.
  252.  
  253.     -If you're installing your 1200 in a tower and your tower has a 
  254.      Reset button on it, you can hook the _KBReset line and Ground up
  255.      to the button and reset that way.
  256.  
  257.     -As a couple people have asked, I don't have A1200 schematics. The
  258.      data herein is the result of some poking around with a logic probe,
  259.      a little deductive reasoning, some extrapolation from the A500
  260.      schematics, and a lot of trial and error. However, if someone out
  261.      there HAS A1200 schematics, I'll gladly reimburse you for your time
  262.      at a photocopier! 8^)
  263.   
  264. Enjoy...
  265. ...Sean Curtin. (smc8516@ultb.isc.rit.edu)
  266.          ^^New address!
  267.  
  268. The following is an optional modification to the above hack which allows
  269. the ability to reset the computer from the external keyboard, posted by
  270. Dana Peters. It looks good, although as of this time I have not yet tried
  271. it myself.
  272.  
  273. ----------------------------------------------------------------------------
  274. 16152.3.26294.1 A1200 external keyboard reset hack
  275. 7/5/94 06:16 89/4737 ai745@FreeNet.Carleton.CA (Dana Peters)
  276. Lines 1 to 89 of 89 (100%)
  277. -----
  278.  
  279. Got an A1200?  What do you think of the keyboard?  If you're a touch
  280. typist you probably figured out pretty fast that the A1200 keyboard
  281. has a problem with rollover. Try rolling over between two keys on the
  282. same row, and you're just as likely to get them in the reverse order
  283. as the forward order.  Commodore botched this one, IMHO.
  284.  
  285. Anyway, I decided to try to "fix" my machine, and found two different
  286. hacks to put another model Amiga keyboard on the A1200; one by Hans
  287. Luijten (j.a.w.m.luijten@kub.nl) and another by Sean Curtin
  288. (squirrel@cup.portal.com).  Using the info from these plans I decided
  289. to add a connector to my A1200 for an A2000/3000 keyboard. Although
  290. the plans called for two pins to be cut or desoldered to disable the
  291. internal keyboard, on my machine I tried leaving the connections
  292. intact, and found that both the internal and external keyboards were
  293. able to co-exist without problems.  Your mileage may vary, however.
  294.  
  295. The other change I made to the plans was to create a circuit to allow
  296. the external keyboard to reset the A1200 the way god intended... with
  297. the three finger salute.  This avoids having to use the internal
  298. keyboard to reset or having to wire up a separate button to perform
  299. reset.  What follows is a uuencoded .lha file containing an IFF
  300. picture of the external keyboard reset circuit and some additional
  301. notes.
  302.  
  303. begin 644 kbreset.lha
  304. M(4(M;&@U+=P$  !Z&0  U07C'   "VMB<F5S970N:69F.OL#B&N;U;;7^<60
  305. M7DO"<(EDITB$<(M1;+-:E0@2*L(XSA-LMD(X=+@X"7**UU+(6W":<AP&!\@D
  306. M)"0E@TV4#/9 LT)%TX#@RRQH[2 3@"V2:&K;S;]_[WO-OTECDDL=LMME-B/=
  307. MF^ &X#X&G.?"$^'-[#M:9(YV]+@^OCH(>7[OJ>KBX^+C^GC(((>5&\Q#YA^Z
  308. M$8GHAQN,3G]''X'K#Y/)'^@ 8O!QO8&KO@P>4]P7_Q>HA:\P[8JUNB:6X+7%
  309. M<M=+4%9@Z2]T6FA?\C6Z+<-19ZU4)TK-EW# VQ0SK JT(M+F1"]O^Q7/"+G_
  310. M>_TVM#6%IY?[O].AFWJ+$<5KY[PL^@<7CWKQYY\N6O(O"UO->WM<7/B%U,+Z
  311. MMH5QP&;(LZT+_&4&D84P]08J=H7X/C 1A998@9 Q: "@%T/U!QVBTB<Y!6]]
  312. MB6160:LBAUY]D5M)>N+[A!=_:%#G<BS1; M_!'O[X4%+(M$4^"4-P&LR/ *F
  313. MW[>18F/C!54---RG[+T+,Q[3@?@D[.^7W2)@2C!,>,5$W!6%'E$2\=4*";PK
  314. M9/;,)7A14$!JID%8^)AI9X6J;.$]%@ DBUC-7E/BSC"KUA631[Y,F5V7A43"
  315. MTJPK116VIC78=%;"\+*F-3G[QZPKDV9*>HL-<7M3)7:[XK'W9.=N^^+7F..*
  316. MK$+-*+PXA9%T4>DP*N+E71?I2!LPJ^P+W4P[QA:6P+FT0TC"K;-%LA32K67E
  317. M71?J$D[;WE; N:'.RR:3;T+\(K@YCR=1K9RA8C#F/=ET=CW00W5O3E+,?MT6
  318. M!ICUM./?4%1\$'(&F/>%2UA:IQ6\:\+..**E>%1P"UYC]BBZT>Y!<FZ+7C1(
  319. M+))DA=_H7,*TD+@I!D/2&/"\DFH#21 2ZQA0W<>T*W[P J'-6!A6.06B7'OB
  320. M6:+'"OO T5@_9^BSRTG%R@;7(+\FT+*"J046686;"+)"<05EVWJKNO>\*;$E
  321. MOSE45PY>)1%]N':A? ^PKT2=M>.*Y%6!]F'>@/APDA7(]ZU%](M%HZM%O;,/
  322. M627Y(,3A7(]R7CHNC)_R/'^J*Y'N,6IO.J;GHKCQ_;U16I.B;G9'6(]Z6$7O
  323. M4]&@KS<,>H+)'18=>$5E?B=N;))S_".RX=R$5A?C]57")S_IZ!H^H;+R%FDD
  324. M@=_MG%7U5^&<69('6,F"-$T0IXJZG,ZW%5ERX!>Q +#([X19D,>['" )8,CT
  325. MY$R"EP:)(8043XK2I+\:0[/Y!!=T\*.#N/B'%[)1>>Z*; GV2]H4\]8ST@C@
  326. MQ];M8T'[+C%/6(<),=TA*(FHL^/< M$HLZX+6K%9E5,*BE66.L<YZ/>.7MXB
  327. M3]%K"WI,*VY-C.TEXSX7TXX=&,'41#D86I FZ*/^EL=%K*"DAM"MJD%9EWQ2
  328. M:]:RE$+XLXHJ>V*37K6Z:-\7\BX'=+Z+XOXE%^7H7Q2[02R?3=%?T>+.%Y;>
  329. M_8,4WQ"ST*6F*;*8""Z<;]T6;XQ5/\%\%XU'<+_&+.P"U9F 707P"TJ40JT5
  330. M8J16]Y?^XJ^(5R(5F(7^OAS[&^[M>6OB9X10B%;]J,_R5+PK7/D/<?Y^;@%7
  331. MD:XO=B%\\G;+>E?*![2UM"] XLK;%$44N_&*[@3Q> ]VNY(O"N^Y*F8+\9@Y
  332. MMBF\V18)--47,L05>+.W<%_X4"%0+6QH-2WS P  8 @  *4+XQP   MK8G)E
  333. M<V5T+G1X=%S[ ZQKFM8XVJ'C3?@#[#A5>C.Z! 2J0E(=2*\I:J*PJJ,3>;\^
  334. M[9->Z[N[L=:5^-__M;=I@4H@2,85SC$,,S@.UC:3+]_WC_#Z?O&KY]CWE]/W
  335. MO_KL?E[I'!RVEV'CO>N%A>HXG(K7P+JV<^O7_?8_V8__<?XXEY5N67YF*[C_
  336. MEQE3G59<[I[7VRP7 ZO0R1MJV^GT?]52O8N#F.X>0MQ2@P["EQ9$GN*[',0E
  337. MNL)DBP?#O.RH6 >+W)QURU%N5?!_@RPR<\N$UP@MTC.(X^XEUUG?)/3 XWO=
  338. M%F]C16\:% MV)6+N7P.*ER$\WSDD_?E07%=??J+B_ _ X%6N<:3W=:6+Y\O@
  339. M)AEZ!%I0G6.TI95LA7-*L9+B6[;$MYB5'JRB5R\11DAY*4 (/4I7Z:2PDX)B
  340. MOB7$EE&=][3N,?<4D8B EK[2E@/KHG?OS3NJD  %=QUR$UQ+S+=$O/-G=(W%
  341. M]7=4NK"JZIN7@Z>^>^IS?$5 &?2-;\5=HGI;9PDP=*/MFR$#;TUSOJO?"2VU
  342. M5ON\0 /]7SI9>"\J<X!>0Z4GSKXJI?0B-Q,H%16/I>BVP-=F(NH!V/?$RO:*
  343. MD$/H 6@=+LLBH>\ET*S%)!"C54\F2$IQ",J?=SX7 !]LH-YNJYG!?-Y3:%5(
  344. M#*A5V]CER8$G6P?=3H_,.]0KN,A3:"[ TO9(ZMRA13$[@YF5 A$,GN!:>FBG
  345. M[EU\6.,)IL@QK0CQ81@W(W4E?05X!?J%9:_K^P?SXE>$;.!5#CBFTY4&<.,B
  346. MBBR>Z<:80L$PH(>(]UK7WWXU *C@?*$4!*H"4%>;GSX<2@\6^GL^$\SD0-H)
  347. M/P-K<TK@+VA4$#P@N]66+;0M,[GS(NBG?EXPJ((40^Y5@Q*=3LW[6]Y-0"J-
  348. M8)K\"C)8(;#BP(3O&#ID99-W2NBI76S7KNR/\_Y"0KYM;')G21Q21:D@@^8P
  349. M _<G>$A"X$;D%&11%@E@XEPH:E<"/^Q.%2#,BJP(=1UNK()-$ZQB<):6=EG%
  350. M^-H"?O1"7[7<JGM@=RPCU+P$G[67!V6I$3$=MHDS/ \Q$TE"8+Z 5H;#VCN(
  351. MG"]8H#R*5Z]G)T='04F :5>OGY/O^WS]NOH!M^X*H&'*F;:A8/O-W-6(!FDF
  352. M<KYRBKU;.39V)?@D[X*V[-6WGY-=6PI]8QCWKK8GF5M%$S;DU89*7W7C(BE$
  353. M;NOK"MZY3AH9\0=5P:/65C%\(+NSKU03 <8KACHFT,MB+Q\PIJT%[CH.PQG6
  354. MVLK8F,YF>3%'+ KUH %,%(^GPRG*'@%I8._AV'R5)IF3RPLIG5]LSC2B5/3-
  355. ?!<F42(T5\H7QO3#L:XY9Z1A_P.F8F!(934[<,:E  )F3
  356.  
  357. end
  358. --
  359. Dana Peters
  360. Dana.Peters@Software.Mitel.COM
  361. ai745@Freenet.Carleton.CA
  362. -- 
  363.